package org.sloth.core.timer
{
	import flash.utils.getQualifiedClassName;
	
	import org.sloth.core.IData;
	import org.sloth.core.IUID;
	import org.sloth.core.StringUtil;
	
	/**
	 * 定时器(<code>TimerMgr</code>)关联的定时任务
	 */	
	public class TimerVO implements IUID, IData
	{
//============================================================================
//PROPERTY
//============================================================================
		private var _data:*;
		private var _uid:String;
		private var _repeatCount:uint;
		private var _delay:uint;
		private var _callBack:Function;
//============================================================================
//CONSTRUCTOR
//============================================================================
		/**
		 * 构造函数
		 * @param delay 执行间隔(单位:毫秒)
		 * @param callBack 回调函数，传入参数为 <code>org.common.mgr.timer.TimerVO</code>
		 * @param data 需要传递的数据
		 * @param repeatCount 执行次数，如果为0，表示无限循环执行
		 * 
		 */		
		public function TimerVO(delay:uint, callBack:Function, data:* = null, repeatCount:uint = 1)
		{
			_uid = StringUtil.createUID();
			
			_data = data;
			_repeatCount = repeatCount;
			_delay = delay;
			_callBack = callBack;
		}
//============================================================================
//GETTER/SETTER
//============================================================================
		public function get uid():String
		{
			return _uid;
		}
		
		public function set uid(value:String):void
		{
			_uid = value;
		}

		public function get data():*
		{
			return _data;
		}
		
		public function set data(value:*):void
		{
			_data = value;
		}

		/**
		 * 执行次数，如果为0，表示无限循环执行
		 */
		public function get repeatCount():uint
		{
			return _repeatCount;
		}

		/**
		 * 执行间隔(单位:毫秒)
		 */
		public function get delay():uint
		{
			return _delay;
		}

		/**
		 * 回调函数，传入参数为 <code>org.common.mgr.timer.TimerVO</code>
		 */
		public function get callBack():Function
		{
			return _callBack;
		}
		
		/**
		 * @private
		 */		
		public function set callBack(value:Function):void
		{
			_callBack = value;
		}


	}
}